package com.qianfeng.yime.util;

/**
 * Created by Fcy on 2015/3/9.
 */

import android.app.Activity;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.util.DisplayMetrics;
import android.widget.Toast;
import com.baidu.mapapi.model.LatLng;

import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import java.util.Locale;

/**
 * 通用的工具
 */
public final class CommonUtils {
    public static void toast(Context context, String toastMsg) {
        Toast.makeText(context, toastMsg, Toast.LENGTH_SHORT).show();
    }

    /**
     * 获取屏幕的宽度
     */
    public static int getWindowsWidth(Activity activity) {
        DisplayMetrics dm = new DisplayMetrics();
        activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
        return dm.widthPixels;
    }

    /**
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
     */
    public static int dip2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

    /**
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
     */
    public static int px2dip(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }

    /**
     * @param url 指定的任意字符串
     * @return 指定字符串通过md5运算并转化为字符串，如果url为null或长度为0，则返回null
     */
    public static String urlMDToString(String url) {
        String result = null;
        if (url != null && url.length() > 0) {
            try {
                MessageDigest md5 = MessageDigest.getInstance("MD5");
                md5.update(url.getBytes());
                byte[] tar = md5.digest();
                StringBuilder sb = new StringBuilder("");
                for (byte b : tar) {
                    int h = (b >> 4) & 15;
                    int l = b & 15;
                    // 因为4位二进制数最大为1111，即15
                    sb.append(Integer.toHexString(h)).append(
                            Integer.toHexString(l));
                }
                result = sb.toString();

            } catch (NoSuchAlgorithmException e) {
                result = String.valueOf(url.hashCode());
                e.printStackTrace();
            }
        }

        return result;
    }



    /**
     * 输入地名,确定地名的坐标
     * @param context
     * @param address
     */
    public static LatLng getAddressLatLng(Context context, String address){
        if (address != null) {
            Geocoder geocoder = new Geocoder(context, Locale.CANADA);
            try {
                List<Address> locationName = geocoder.getFromLocationName(address, 1);
                if (locationName != null && !locationName.isEmpty()) {
                    Address addressName = locationName.get(0);

                    double latitude = addressName.getLatitude();
                    double longitude = addressName.getLongitude();

                    return new LatLng(latitude, longitude);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

}
